#include <stdio.h>

int main(int argc, char **argv)
{
    FILE *fp;
    fp = fopen("data.txt", "r");
    if (fp == NULL)
    {
        puts("read file fail");
        return -1;
    }
    int c;
    // fgetc()与getc()的用法是一样的，都只有文件指针一个参数。两者的区别是，getc()一般用宏来实现，而fgetc()是函数实现，所以前者的性能可能更好一些。注意，虽然这两个函数返回的是一个字符，但是它们的返回值类型却不是char，而是int，这是因为读取失败的情况下，它们会返回 EOF，这个值一般是-1。
    c = fgetc(fp);
    // 或者c = getc(fp);
    // 循环读取整个文件内容
    while (c != EOF)
    {
        printf("%c", c);
        c = fgetc(fp);
    }
    int closed = fclose(fp);
    if (closed != 0)
    {
        printf("close file error");
    }
}